﻿using AutoMapper;
using QuanLyGiaoVuDAL.DTO;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace QuanLyGiaoVuUI.Models.LopMonHoc
{
    public class CapNhatLopMonHocViewModel
    {
        public System.Guid LopMonHocId { get; set; }

        [Display(Name="Mã lớp")]
        [Required(ErrorMessage="Nhập Mã lớp")]
        public String MaLopMonHoc { get; set; }

        public String MaLopDayDu
        {
            get
            {
                try
                {
                    return MonHoc.MaMonHoc + MaLopMonHoc;
                }
                catch
                {
                    return String.Empty;
                }
            }
        }

        public String PhanDauMaLop
        {
            get
            {
                if (MonHoc != null)
                    return MonHoc.MaMonHoc + ".";
                else return String.Empty;
            }
        }

        
        [Display(Name="Môn học")]
        [Required(ErrorMessage="Chưa chọn môn học.")]
        public System.Guid MaMonHoc { get; set; }

        [Display(Name="Giảng viên 1")]
        [Required(ErrorMessage="Chưa chọn giảng viên.")]
        public System.Guid MaGiangVien1 { get; set; }

        [Display(Name="Giảng viên 2")]
        public System.Guid? MaGiangVien2 { get; set; }
        
        [Display(Name="Học kỳ")]
        public System.Guid MaHocKy { get; set; }

        [Display(Name="Sĩ số tối đa")]
        public int SiSoToiDa { get; set; }

        [Display(Name = "Sĩ số thực tế")]
        public int SiSoThucTe { get; set; }

        [Display(Name="Loại lớp")]
        public int LoaiLop { get; set; }

        [Display(Name="Tỷ lệ điểm")]
        public short TyLeDiem { get; set; }
        
        [Display(Name="Lớp lý thuyết")]
        public System.Guid? MaLopChinh { get; set; }

        [Display(Name="Lớp sinh viên")]
        public Guid? LopSinhVienId { get; set; }

        [Display(Name="Tiết bắt đầu")]
        public int? MaTietDau { get; set; }

        [Display(Name="Tiết kết thúc")]
        public int? MaTietSau { get; set; }

        [Display(Name="Thứ")]
        public short Thu { get; set; }

        [Display(Name = "Phòng")]
        public String Phong { get; set; }

        public bool GiangVienXacNhan { get; set; }

        public bool DaPhanHoi { get; set; }

        public String GhiChu { get; set; }

        public bool DongYMoLop { get; set; }

        public int SC1 { get; set; }

        [Display(Name = "Buổi 1:")]
        public DateTime? Buoi1 { get; set; }

        public int SC2 { get; set; }

        [Display(Name = "Buổi 2:")]
        public DateTime? Buoi2 { get; set; }

        public int SC3 { get; set; }

        [Display(Name = "Buổi 3:")]
        public DateTime? Buoi3 { get; set; }

        [Display(Name="Cập nhật lịch giảng dạy")]
        public bool CapNhatLichDay { get; set; }

        public bool ChiLopThucHanh { get; set; }

        public MonHocDTO MonHoc { get; set; }

        public GiangVienDTO GiangVien1 { get; set; }

        public GiangVienDTO GiangVien2 { get; set; }

        public HocKyDTO HocKy { get; set; }

        public TietHocDTO TietDau { get; set; }

        public TietHocDTO TietSau { get; set; }

        public LopMonHocDTO LopChinh { get; set; }

        public LopSinhVienDTO LopSinhVien { get; set; }

        public LichThiDTO LichThi { get; set; }

        public IEnumerable<GiangVienDTO> DanhSachGiangVien { get; set; }

        public IEnumerable<MonHocDTO> DanhSachMonHoc { get; set; }

        public IEnumerable<HocKyDTO> DanhSachHocKy { get; set; }

        public IEnumerable<LopMonHocDTO> DanhSachLopMonHoc { get; set; }

        public IEnumerable<LopMonHocDTO> DanhSachLopThucHanh { get; set; }

        public IEnumerable<TietHocDTO> DanhSachTiet { get; set; }

        public IEnumerable<int> DanhSachCa { get; set; }

        public IEnumerable<LopSinhVienDTO> DanhSachLopSinhVien { get; set; }

        public LopMonHocDTO ToLopMonHocDTO()
        {
            Mapper.CreateMap(typeof(CapNhatLopMonHocViewModel), typeof(LopMonHocDTO));
            LopMonHocDTO lopMonHocDTO = new LopMonHocDTO();
            Mapper.Map(this, lopMonHocDTO);
            return lopMonHocDTO;
        }

        public CapNhatLopMonHocViewModel FromLopMonHocDTO(LopMonHocDTO lopMonHocDTO)
        {
            Mapper.CreateMap(typeof(LopMonHocDTO), typeof(CapNhatLopMonHocViewModel));
            CapNhatLopMonHocViewModel viewModel = new CapNhatLopMonHocViewModel();
            Mapper.Map(lopMonHocDTO, viewModel);
            return viewModel;
        }
    }
}